package com.tarena.lbs.marketing.web.repository;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.tarena.lbs.marketing.web.mapper.CouponMapper;
import com.tarena.lbs.pojo.marketing.po.CouponPO;
import com.tarena.lbs.pojo.marketing.query.CouponQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class CouponRepository {
    @Autowired
    private CouponMapper couponMapper;
    /**
     * 根据查询条件封装优惠券查询逻辑
     *
     * 该方法主要功能是根据提供的业务ID筛选所有优惠券，并返回分页信息
     * 它首先创建一个查询包装器，然后根据业务ID设置筛选条件，最后执行查询并返回分页的结果
     *
     * @param query 查询对象，包含业务ID等查询条件
     * @return 分页的优惠券列表，包含所有满足条件的优惠券信息
     */
    public PageInfo<CouponPO> getCouponsByPage(CouponQuery query) {
        //只有在 businessId不为空时,SHOP角色商家账号 查询当前商家下的所有优惠券
        // 创建一个查询包装器用于构建查询条件
        QueryWrapper<CouponPO> queryWrapper = new QueryWrapper<>();
        // 如果业务ID不为空，将其作为查询条件添加到查询包装器中
        if (query.getBusinessId() != null) {
            queryWrapper.eq("business_id", query.getBusinessId());
        }
        // 执行查询并返回分页信息
        return PageInfo.of(couponMapper.selectList(queryWrapper));
    }
    // 调用优惠券数据层写入到优惠券表格
    public void saveCoupon(CouponPO poParam) {
        couponMapper.insert(poParam);
    }

    public CouponPO getCouponById(Integer id) {
        return couponMapper.selectById(id);
    }
}
